getTokens(); $pointer = $inlineThenPointer; do { $pointer = TokenHelper::findNext( $phpcsFile, [T_INLINE_ELSE, T_OPEN_PARENTHESIS, T_OPEN_SHORT_ARRAY, T_OPEN_SQUARE_BRACKET], $pointer + 1, ); if ($tokens[$pointer]['code'] === T_OPEN_PARENTHESIS) { $pointer = $tokens[$pointer]['parenthesis_closer']; continue; } if (in_array($tokens[$pointer]['code'], [T_OPEN_SHORT_ARRAY, T_OPEN_SQUARE_BRACKET], true)) { $pointer = $tokens[$pointer]['bracket_closer']; continue; } if (ScopeHelper::isInSameScope($phpcsFile, $inlineThenPointer, $pointer)) { break; } } while ($pointer !== null); return $pointer; } public static function getStartPointer(File $phpcsFile, int $inlineThenPointer): int { $tokens = $phpcsFile->getTokens(); $pointerBeforeCondition = $inlineThenPointer; do { $pointerBeforeCondition = TokenHelper::findPrevious( $phpcsFile, [T_EQUAL, T_DOUBLE_ARROW, T_COMMA, T_RETURN, T_THROW, T_CASE, T_OPEN_TAG, T_OPEN_TAG_WITH_ECHO, T_OPEN_SQUARE_BRACKET, T_OPEN_SHORT_ARRAY, T_OPEN_PARENTHESIS], $pointerBeforeCondition - 1, ); if ( in_array($tokens[$pointerBeforeCondition]['code'], [T_OPEN_SQUARE_BRACKET, T_OPEN_SHORT_ARRAY], true) && $tokens[$pointerBeforeCondition]['bracket_closer'] < $inlineThenPointer ) { continue; } if ( $tokens[$pointerBeforeCondition]['code'] === T_OPEN_PARENTHESIS && $tokens[$pointerBeforeCondition]['parenthesis_closer'] < $inlineThenPointer ) { continue; } break; } while (true); return TokenHelper::findNextEffective($phpcsFile, $pointerBeforeCondition + 1); } public static function getEndPointer(File $phpcsFile, int $inlineThenPointer, int $inlineElsePointer): int { $tokens = $phpcsFile->getTokens(); $pointerAfterInlineElseEnd = $inlineElsePointer; do { $pointerAfterInlineElseEnd = TokenHelper::findNext( $phpcsFile, [T_SEMICOLON, T_COLON, T_COMMA, T_DOUBLE_ARROW, T_CLOSE_PARENTHESIS, T_CLOSE_SHORT_ARRAY, T_CLOSE_SQUARE_BRACKET, T_COALESCE], $pointerAfterInlineElseEnd + 1, ); if ($pointerAfterInlineElseEnd === null) { continue; } if ($tokens[$pointerAfterInlineElseEnd]['code'] === T_CLOSE_PARENTHESIS) { if ($tokens[$pointerAfterInlineElseEnd]['parenthesis_opener'] < $inlineThenPointer) { break; } } elseif (in_array($tokens[$pointerAfterInlineElseEnd]['code'], [T_CLOSE_SHORT_ARRAY, T_CLOSE_SQUARE_BRACKET], true)) { if ($tokens[$pointerAfterInlineElseEnd]['bracket_opener'] < $inlineThenPointer) { break; } } elseif ($tokens[$pointerAfterInlineElseEnd]['code'] === T_COMMA) { $previousPointer = TokenHelper::findPrevious( $phpcsFile, [T_OPEN_PARENTHESIS, T_OPEN_SHORT_ARRAY], $pointerAfterInlineElseEnd - 1, $inlineThenPointer, ); if ($previousPointer === null) { break; } if ( $tokens[$previousPointer]['code'] === T_OPEN_PARENTHESIS && $tokens[$previousPointer]['parenthesis_closer'] < $pointerAfterInlineElseEnd ) { break; } if ( $tokens[$previousPointer]['code'] === T_OPEN_SHORT_ARRAY && $tokens[$previousPointer]['bracket_closer'] < $pointerAfterInlineElseEnd ) { break; } } elseif ($tokens[$pointerAfterInlineElseEnd]['code'] === T_DOUBLE_ARROW) { $previousPointer = TokenHelper::findPrevious( $phpcsFile, T_OPEN_SHORT_ARRAY, $pointerAfterInlineElseEnd - 1, $inlineThenPointer, ); if ($previousPointer === null) { break; } } elseif (ScopeHelper::isInSameScope($phpcsFile, $inlineElsePointer, $pointerAfterInlineElseEnd)) { break; } } while ($pointerAfterInlineElseEnd !== null); if ($pointerAfterInlineElseEnd !== null) { return TokenHelper::findPreviousEffective($phpcsFile, $pointerAfterInlineElseEnd - 1); } return TokenHelper::findPreviousEffective($phpcsFile, count($tokens) - 1); } }